home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.plaf.basic;
-
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Dimension;
- import java.awt.FontMetrics;
- import java.awt.Insets;
- import java.awt.LayoutManager;
- import java.awt.Rectangle;
- import javax.swing.SwingUtilities;
-
- public class BasicTabbedPaneUI$TabbedPaneLayout implements LayoutManager {
- // $FF: synthetic field
- private final BasicTabbedPaneUI this$0;
-
- public BasicTabbedPaneUI$TabbedPaneLayout(BasicTabbedPaneUI var1) {
- this.this$0 = var1;
- }
-
- public void addLayoutComponent(String var1, Component var2) {
- }
-
- public void calculateLayoutInfo() {
- int var1 = this.this$0.tabPane.getTabCount();
- this.this$0.assureRectsCreated(var1);
- this.calculateTabRects(this.this$0.tabPane.getTabPlacement(), var1);
- }
-
- protected Dimension calculateSize(boolean var1) {
- int var2 = this.this$0.tabPane.getTabPlacement();
- Insets var3 = this.this$0.tabPane.getInsets();
- Insets var4 = this.this$0.getContentBorderInsets(var2);
- Dimension var5 = new Dimension(0, 0);
- int var6 = var4.top + var4.bottom;
- int var7 = var4.left + var4.right;
- int var8 = 0;
- int var9 = 0;
-
- for(int var10 = 0; var10 < this.this$0.tabPane.getTabCount(); ++var10) {
- Component var11 = this.this$0.tabPane.getComponentAt(var10);
- Dimension var12 = var1 ? var11.getMinimumSize() : var11.getPreferredSize();
- if (var12 != null) {
- var9 = Math.max(var12.height, var9);
- var8 = Math.max(var12.width, var8);
- }
- }
-
- var7 += var8;
- var6 += var9;
- int var15 = 0;
- switch (var2) {
- case 1:
- case 3:
- default:
- var15 = this.preferredTabAreaHeight(var2, var7);
- var6 += var15;
- break;
- case 2:
- case 4:
- var15 = this.preferredTabAreaWidth(var2, var6);
- var7 += var15;
- }
-
- return new Dimension(var7 + var3.left + var3.right, var6 + var3.bottom + var3.top);
- }
-
- protected void calculateTabRects(int var1, int var2) {
- FontMetrics var3 = this.this$0.getFontMetrics();
- Dimension var4 = this.this$0.tabPane.getSize();
- Insets var5 = this.this$0.tabPane.getInsets();
- Insets var6 = this.this$0.getTabAreaInsets(var1);
- int var7 = var3.getHeight();
- int var8 = this.this$0.tabPane.getSelectedIndex();
- boolean var15 = var1 == 2 || var1 == 4;
- int var12;
- int var13;
- int var14;
- switch (var1) {
- case 1:
- default:
- this.this$0.maxTabHeight = this.this$0.calculateMaxTabHeight(var1);
- var12 = var5.left + var6.left;
- var13 = var5.top + var6.top;
- var14 = var4.width - (var5.right + var6.right);
- break;
- case 2:
- this.this$0.maxTabWidth = this.this$0.calculateMaxTabWidth(var1);
- var12 = var5.left + var6.left;
- var13 = var5.top + var6.top;
- var14 = var4.height - (var5.bottom + var6.bottom);
- break;
- case 3:
- this.this$0.maxTabHeight = this.this$0.calculateMaxTabHeight(var1);
- var12 = var5.left + var6.left;
- var13 = var4.height - var5.bottom - var6.bottom - this.this$0.maxTabHeight;
- var14 = var4.width - (var5.right + var6.right);
- break;
- case 4:
- this.this$0.maxTabWidth = this.this$0.calculateMaxTabWidth(var1);
- var12 = var4.width - var5.right - var6.right - this.this$0.maxTabWidth;
- var13 = var5.top + var6.top;
- var14 = var4.height - (var5.bottom + var6.bottom);
- }
-
- int var9 = this.this$0.getTabRunOverlay(var1);
- this.this$0.runCount = 0;
- this.this$0.selectedRun = -1;
- if (var2 != 0) {
- for(int var10 = 0; var10 < var2; ++var10) {
- Rectangle var16 = this.this$0.rects[var10];
- if (!var15) {
- if (var10 > 0) {
- var16.x = this.this$0.rects[var10 - 1].x + this.this$0.rects[var10 - 1].width;
- } else {
- this.this$0.tabRuns[0] = 0;
- this.this$0.runCount = 1;
- this.this$0.maxTabWidth = 0;
- var16.x = var12;
- }
-
- var16.width = this.this$0.calculateTabWidth(var1, var10, var3);
- this.this$0.maxTabWidth = Math.max(this.this$0.maxTabWidth, var16.width);
- if (var16.x != 2 + var5.left && var16.x + var16.width > var14) {
- if (this.this$0.runCount > this.this$0.tabRuns.length - 1) {
- this.this$0.expandTabRunsArray();
- }
-
- this.this$0.tabRuns[this.this$0.runCount] = var10;
- ++this.this$0.runCount;
- var16.x = var12;
- }
-
- var16.y = var13;
- var16.height = this.this$0.maxTabHeight;
- } else {
- if (var10 > 0) {
- var16.y = this.this$0.rects[var10 - 1].y + this.this$0.rects[var10 - 1].height;
- } else {
- this.this$0.tabRuns[0] = 0;
- this.this$0.runCount = 1;
- this.this$0.maxTabHeight = 0;
- var16.y = var13;
- }
-
- var16.height = this.this$0.calculateTabHeight(var1, var10, var7);
- this.this$0.maxTabHeight = Math.max(this.this$0.maxTabHeight, var16.height);
- if (var16.y != 2 + var5.top && var16.y + var16.height > var14) {
- if (this.this$0.runCount > this.this$0.tabRuns.length - 1) {
- this.this$0.expandTabRunsArray();
- }
-
- this.this$0.tabRuns[this.this$0.runCount] = var10;
- ++this.this$0.runCount;
- var16.y = var13;
- }
-
- var16.x = var12;
- var16.width = this.this$0.maxTabWidth;
- }
-
- if (var10 == var8) {
- this.this$0.selectedRun = this.this$0.runCount - 1;
- }
- }
-
- if (this.this$0.runCount > 1) {
- this.normalizeTabRuns(var1, var2, var15 ? var13 : var12, var14);
- this.this$0.selectedRun = this.this$0.getRunForTab(var2, var8);
- if (this.this$0.shouldRotateTabRuns(var1)) {
- this.rotateTabRuns(var1, this.this$0.selectedRun);
- }
- }
-
- for(int var20 = this.this$0.runCount - 1; var20 >= 0; --var20) {
- int var17 = this.this$0.tabRuns[var20];
- int var18 = this.this$0.tabRuns[var20 == this.this$0.runCount - 1 ? 0 : var20 + 1];
- int var19 = var18 != 0 ? var18 - 1 : var2 - 1;
- if (!var15) {
- for(int var21 = var17; var21 <= var19; ++var21) {
- Rectangle var23 = this.this$0.rects[var21];
- var23.y = var13;
- var23.x += this.this$0.getTabRunIndent(var1, var20);
- }
-
- if (this.this$0.shouldPadTabRun(var1, var20)) {
- this.padTabRun(var1, var17, var19, var14);
- }
-
- if (var1 == 3) {
- var13 -= this.this$0.maxTabHeight - var9;
- } else {
- var13 += this.this$0.maxTabHeight - var9;
- }
- } else {
- for(int var11 = var17; var11 <= var19; ++var11) {
- Rectangle var22 = this.this$0.rects[var11];
- var22.x = var12;
- var22.y += this.this$0.getTabRunIndent(var1, var20);
- }
-
- if (this.this$0.shouldPadTabRun(var1, var20)) {
- this.padTabRun(var1, var17, var19, var14);
- }
-
- if (var1 == 4) {
- var12 -= this.this$0.maxTabWidth - var9;
- } else {
- var12 += this.this$0.maxTabWidth - var9;
- }
- }
- }
-
- this.padSelectedTab(var1, var8);
- }
- }
-
- public void layoutContainer(Container var1) {
- int var2 = this.this$0.tabPane.getTabPlacement();
- Insets var3 = this.this$0.tabPane.getInsets();
- int var4 = this.this$0.tabPane.getSelectedIndex();
- Component var5 = this.this$0.getVisibleComponent();
- this.calculateLayoutInfo();
- if (var4 < 0) {
- if (var5 != null) {
- this.this$0.setVisibleComponent((Component)null);
- }
- } else {
- int var10 = 0;
- int var11 = 0;
- Insets var12 = this.this$0.getContentBorderInsets(var2);
- Component var13 = this.this$0.tabPane.getComponentAt(var4);
- boolean var14 = false;
- if (var13 != null && var13 != var5) {
- if (var5 != null && SwingUtilities.findFocusOwner(var5) != null) {
- var14 = true;
- }
-
- this.this$0.setVisibleComponent(var13);
- }
-
- Rectangle var15 = this.this$0.tabPane.getBounds();
- int var16 = this.this$0.tabPane.getComponentCount();
- if (var16 > 0) {
- int var6;
- int var7;
- switch (var2) {
- case 1:
- default:
- var11 = this.this$0.calculateTabAreaHeight(var2, this.this$0.runCount, this.this$0.maxTabHeight);
- var6 = var3.left + var12.left;
- var7 = var3.top + var11 + var12.top;
- break;
- case 2:
- var10 = this.this$0.calculateTabAreaWidth(var2, this.this$0.runCount, this.this$0.maxTabWidth);
- var6 = var3.left + var10 + var12.left;
- var7 = var3.top + var12.top;
- break;
- case 3:
- var11 = this.this$0.calculateTabAreaHeight(var2, this.this$0.runCount, this.this$0.maxTabHeight);
- var6 = var3.left + var12.left;
- var7 = var3.top + var12.top;
- break;
- case 4:
- var10 = this.this$0.calculateTabAreaWidth(var2, this.this$0.runCount, this.this$0.maxTabWidth);
- var6 = var3.left + var12.left;
- var7 = var3.top + var12.top;
- }
-
- int var8 = var15.width - var10 - var3.left - var3.right - var12.left - var12.right;
- int var9 = var15.height - var11 - var3.top - var3.bottom - var12.top - var12.bottom;
-
- for(int var17 = 0; var17 < var16; ++var17) {
- Component var18 = this.this$0.tabPane.getComponent(var17);
- var18.setBounds(var6, var7, var8, var9);
- }
- }
-
- if (var14 && !this.this$0.requestFocusForVisibleComponent()) {
- this.this$0.tabPane.requestFocus();
- }
- }
-
- }
-
- public Dimension minimumLayoutSize(Container var1) {
- return this.calculateSize(true);
- }
-
- protected void normalizeTabRuns(int var1, int var2, int var3, int var4) {
- boolean var5 = var1 == 2 || var1 == 4;
- int var6 = this.this$0.runCount - 1;
- boolean var7 = true;
- double var8 = (double)1.25F;
-
- while(var7) {
- int var10 = this.this$0.lastTabInRun(var2, var6);
- int var11 = this.this$0.lastTabInRun(var2, var6 - 1);
- int var12;
- int var13;
- if (!var5) {
- var12 = this.this$0.rects[var10].x + this.this$0.rects[var10].width;
- var13 = (int)((double)this.this$0.maxTabWidth * var8);
- } else {
- var12 = this.this$0.rects[var10].y + this.this$0.rects[var10].height;
- var13 = (int)((double)this.this$0.maxTabHeight * var8 * (double)2.0F);
- }
-
- if (var4 - var12 > var13) {
- this.this$0.tabRuns[var6] = var11;
- if (!var5) {
- this.this$0.rects[var11].x = var3;
- } else {
- this.this$0.rects[var11].y = var3;
- }
-
- for(int var14 = var11 + 1; var14 <= var10; ++var14) {
- if (!var5) {
- this.this$0.rects[var14].x = this.this$0.rects[var14 - 1].x + this.this$0.rects[var14 - 1].width;
- } else {
- this.this$0.rects[var14].y = this.this$0.rects[var14 - 1].y + this.this$0.rects[var14 - 1].height;
- }
- }
- } else if (var6 == this.this$0.runCount - 1) {
- var7 = false;
- }
-
- if (var6 - 1 > 0) {
- --var6;
- } else {
- var6 = this.this$0.runCount - 1;
- var8 += (double)0.25F;
- }
- }
-
- }
-
- protected void padSelectedTab(int var1, int var2) {
- if (var2 >= 0) {
- Rectangle var3 = this.this$0.rects[var2];
- Insets var4 = this.this$0.getSelectedTabPadInsets(var1);
- var3.x -= var4.left;
- var3.width += var4.left + var4.right;
- var3.y -= var4.top;
- var3.height += var4.top + var4.bottom;
- }
-
- }
-
- protected void padTabRun(int var1, int var2, int var3, int var4) {
- Rectangle var5 = this.this$0.rects[var3];
- if (var1 != 1 && var1 != 3) {
- int var11 = var5.y + var5.height - this.this$0.rects[var2].y;
- int var12 = var4 - (var5.y + var5.height);
- float var13 = (float)var12 / (float)var11;
-
- for(int var14 = var2; var14 <= var3; ++var14) {
- Rectangle var15 = this.this$0.rects[var14];
- if (var14 > var2) {
- var15.y = this.this$0.rects[var14 - 1].y + this.this$0.rects[var14 - 1].height;
- }
-
- var15.height += Math.round((float)var15.height * var13);
- }
-
- var5.height = var4 - var5.y;
- } else {
- int var6 = var5.x + var5.width - this.this$0.rects[var2].x;
- int var7 = var4 - (var5.x + var5.width);
- float var8 = (float)var7 / (float)var6;
-
- for(int var9 = var2; var9 <= var3; ++var9) {
- Rectangle var10 = this.this$0.rects[var9];
- if (var9 > var2) {
- var10.x = this.this$0.rects[var9 - 1].x + this.this$0.rects[var9 - 1].width;
- }
-
- var10.width += Math.round((float)var10.width * var8);
- }
-
- var5.width = var4 - var5.x;
- }
-
- }
-
- public Dimension preferredLayoutSize(Container var1) {
- return this.calculateSize(false);
- }
-
- protected int preferredTabAreaHeight(int var1, int var2) {
- FontMetrics var3 = this.this$0.getFontMetrics();
- int var4 = this.this$0.tabPane.getTabCount();
- int var5 = 0;
- if (var4 > 0) {
- int var6 = 1;
- int var7 = 0;
- int var8 = this.this$0.calculateMaxTabHeight(var1);
-
- for(int var9 = 0; var9 < var4; ++var9) {
- int var10 = this.this$0.calculateTabWidth(var1, var9, var3);
- if (var7 != 0 && var7 + var10 > var2) {
- ++var6;
- var7 = 0;
- }
-
- var7 += var10;
- }
-
- var5 = this.this$0.calculateTabAreaHeight(var1, var6, var8);
- }
-
- return var5;
- }
-
- protected int preferredTabAreaWidth(int var1, int var2) {
- FontMetrics var3 = this.this$0.getFontMetrics();
- int var4 = this.this$0.tabPane.getTabCount();
- int var5 = 0;
- if (var4 > 0) {
- int var6 = 1;
- int var7 = 0;
- int var8 = var3.getHeight();
- this.this$0.maxTabWidth = this.this$0.calculateMaxTabWidth(var1);
-
- for(int var9 = 0; var9 < var4; ++var9) {
- int var10 = this.this$0.calculateTabHeight(var1, var9, var8);
- if (var7 != 0 && var7 + var10 > var2) {
- ++var6;
- var7 = 0;
- }
-
- var7 += var10;
- }
-
- var5 = this.this$0.calculateTabAreaWidth(var1, var6, this.this$0.maxTabWidth);
- }
-
- return var5;
- }
-
- public void removeLayoutComponent(Component var1) {
- }
-
- protected void rotateTabRuns(int var1, int var2) {
- for(int var3 = 0; var3 < var2; ++var3) {
- int var4 = this.this$0.tabRuns[0];
-
- for(int var5 = 1; var5 < this.this$0.runCount; ++var5) {
- this.this$0.tabRuns[var5 - 1] = this.this$0.tabRuns[var5];
- }
-
- this.this$0.tabRuns[this.this$0.runCount - 1] = var4;
- }
-
- }
- }
-